package com.woniu.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.woniu.entity.SysLoginLog;
import reactor.core.publisher.Mono;

import java.io.Serializable;
import java.util.Collection;
import java.util.List;

/**
 * @Author pml
 * @Date 2025/6/18 23:04
 * @Description TODO
 * 登录日志服务接口
 * 扩展IService以支持响应式操作
 */
public interface SysLoginLogService extends IService<SysLoginLog> {
    /**
     * 响应式保存登录日志
     * @param loginLog 登录日志对象
     * @return 是否保存成功
     */
    Mono<Boolean> saveLoginLog(SysLoginLog loginLog);

    /**
     * 批量查询登录日志
     * 覆盖父接口方法以添加更详细的JavaDoc注释
     * @param logIds 日志ID集合
     * @return 日志列表
     */
    List<SysLoginLog> listByIds(Collection<? extends Serializable> logIds);

    /**
     * 根据用户ID查询登录日志
     * 业务中经常需要按用户查看登录记录，因此添加此专用方法
     * @param userId 用户ID
     * @return 该用户的登录日志列表
     */
    List<SysLoginLog> listByUserId(Integer userId);

    /**
     * 清理过期日志
     * 登录日志会不断累积，定期清理可防止表过大影响性能
     * @param days 保留最近天数，超过此天数的日志将被删除
     * @return 清理的记录数
     */
    int cleanExpiredLogs(int days);
}
